package com.gem.day02;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 本类用来演示JDK8.0之前的日期对象
 * 
 * java.util.Date/java.sql.Date		日期类
 * java.util.Calendar						日历类
 * java.text.DateFormat				日期格式化工具类
 * 
 * @author easonsy
 * 2020年7月17日 上午11:01:16
 */
public class DateDemo {
	public static void main(String[] args) {
		//1.获取当前系统时间
		Date date = new Date();
		System.out.println(date);

		//2.获取指定年月日
		//注意:此处的代码是deprecated,表示已过时,
		//已过时的代码不是不能使用而是不推荐使用,因为有更高的替代方案
		Date date2 = new Date(2012 - 1900, 12 - 1, 12, 12, 12, 12);
		System.out.println(date2);

		//通过时间对象调用其功能方法
		//1.判断日期先后顺序
		System.out.println(date.after(date2));
		System.out.println(date.before(date2));

		//Java中日期不能直接计算,如果要计算需要转换成毫秒数,然后运算
		//System.out.println(date - date2);

		//把当前日期类型转换成对应的毫秒数,该毫秒数是从1970.1.1 0+时区:0:0开始计算的毫秒数
		System.out.println(date.getTime());
		System.out.println(date.getTime() - date2.getTime());

		//补充,获取系统毫秒数
		//可以使用它来进行粗略的程序性能测试
		long l = System.currentTimeMillis();
		System.out.println(l);

		//过时
		//System.out.println(date.getYear());

		//把毫秒数转换成日期
		Date date3 = new Date(1594956685573L);
		System.out.println(date3);

		//通过日期格式化工具类来自定义日期输出格式
		//注意:参数为指定的时间模板
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
		String dateStr = sdf.format(date);
		System.out.println(dateStr);

		//本工具类还可以反向操作,把日期字符串解析成日期类型
		sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			Date date4 = sdf.parse("2012-12-12");
			System.out.println(date4);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}
}
